#ifndef CLIB_TCP_MISC_H
#define CLIB_TCP_MISC_H

#pragma once

#ifdef __cplusplus
extern "C" {
#endif

//#include "clib_stack_core.h"
#include "clib_stack.h"

#define TCP_CMP_SEQ(a, b)   ((int32_t) ((a) - (b)))

#define TCP_CMP_ACK(a, b)   ((int32_t) ((a) - (b)))

i32_t
tcp_send_pack(stack_ctx_t *ctx, stack_netif_t *netif, clib_sock_t *sock, u08_t flag, int32_t type);

i32_t
tcp_check_seq(stack_ctx_t *ctx, clib_sock_t *sock, tcp_hdr_t *tcp, i32_t data_len);

i32_t
tcp_check_ack(stack_ctx_t *ctx, clib_sock_t *sock, tcp_hdr_t *tcp, i32_t data_len);

i32_t
tcp_get_option(stack_ctx_t *ctx, clib_sock_t *sock, u08_t *option, i32_t data_len);

i32_t
tcp_set_option(stack_ctx_t *ctx, clib_sock_t *sock, u08_t *option, i32_t *opts_len);

// i32_t
// tcp_check_syn(clib_sock_t *sock,u32_t seq, i32_t data_len);


#ifdef __cplusplus
}
#endif

#endif